package com.leyou.trade.service.impl;

import com.leyou.auth.utils.UserContext;
import com.leyou.trade.repository.CartRepository;
import com.leyou.trade.entity.CartItem;
import com.leyou.trade.service.CartService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
public class CartServiceImpl implements CartService {

    @Autowired
    private CartRepository cartRepository;


    @Override
    public void saveCartItem(CartItem cartItem) { //添加购物车是 会吧skuId传过来


        // System.out.println(cartItem.);

        String id = buildId(cartItem.getSkuId());//设置新的主键id

        Optional<CartItem> optional = cartRepository.findById(id);//


        if (optional.isPresent()) {//能查到 说明存在

            CartItem item = optional.get();

            cartItem.setNum(cartItem.getNum() + item.getNum());

        }/* else { //todo 如果没查到,就是第一次查询 第一次要添加传来数据没有的字段  进行主键的添加
            cartItem.setId(id);
            cartItem.setUserId(UserContext.getUser().getId());//同时第一次没有userId

        }*/
        cartItem.setId(id);
        cartItem.setUserId(UserContext.getUser().getId());


        //把添加到购物车的数据添加到了mongodb 数据库中
        cartRepository.save(cartItem);

    }

    @Override
    public String buildId(Long skuId) {

        //String.format("U%dS%d",UserContext.getUser().getId(),skuId);等同于下

        return "U" + UserContext.getUser().getId() + "S" + skuId;


    }

    //查询购物车信息
    @Override
    public List<CartItem> listUserCarts() {
        //先查询
        List<CartItem> roult = this.cartRepository.findByUserId(UserContext.getUser().getId());


        return roult;
    }

    //todo 删除 购物车中一项
    @Override
    public void deleteCart(Long skuId) {

        cartRepository.deleteById(buildId(skuId));

    }


}
